

#ifndef UC_GELENT2D_H
#define UC_GELENT2D_H

#include "zgecurv2d.h"
#include "zgepnt2d.h"
#include "zgevec2d.h"
#pragma pack (push, 8)

class UcGeCircArc2d;

class
GE_DLLEXPIMPORT
UcGeLinearEnt2d : public UcGeCurve2d
{
public:

    ZSoft::Boolean   intersectWith  (const UcGeLinearEnt2d& line, UcGePoint2d& intPnt,
                                     const UcGeTol& tol = UcGeContext::gTol) const;

    ZSoft::Boolean   overlap        (const UcGeLinearEnt2d& line,
                                     UcGeLinearEnt2d*& overlap,
                                     const UcGeTol& tol = UcGeContext::gTol) const;

    ZSoft::Boolean   isParallelTo   (const UcGeLinearEnt2d& line,
                                     const UcGeTol& tol = UcGeContext::gTol) const;
    ZSoft::Boolean   isPerpendicularTo(const UcGeLinearEnt2d& line,
                                      const UcGeTol& tol = UcGeContext::gTol) const;

    ZSoft::Boolean   isColinearTo   (const UcGeLinearEnt2d& line,
                                     const UcGeTol& tol = UcGeContext::gTol) const;

    void             getPerpLine    (const UcGePoint2d& pnt, UcGeLine2d& perpLine) const;

    UcGePoint2d      pointOnLine    () const;
    UcGeVector2d     direction      () const;
    void             getLine        (UcGeLine2d& line) const;

    UcGeLinearEnt2d& operator =     (const UcGeLinearEnt2d& line);

protected:
    UcGeLinearEnt2d ();
    UcGeLinearEnt2d (const UcGeLinearEnt2d&);
};

#pragma pack (pop)
#endif
